package es.revuel.toke.netdao;

import java.io.IOException;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import es.revuel.toke.vo.UsuarioVO;

//TODO JAVADOC!!!
public class UsuarioNetDAO {
	
	
	public static UsuarioVO obtenerUsuarioPorEmail (String email)throws ClientProtocolException, IOException, JSONException{
		UsuarioVO usuario = null;
		usuario = obtenerUsuario("email",email, ServiceConfig.SERVIDOR + ServiceConfig.RECUPERARUSUARIOEMAIL);
		return usuario;
		
	}
	
	public static UsuarioVO obtenerUsuarioPorIdUsuario (Integer idUsuario)throws ClientProtocolException, IOException, JSONException{
		UsuarioVO usuario = null;
		usuario = obtenerUsuario("idusuario",idUsuario.toString(), ServiceConfig.SERVIDOR + ServiceConfig.RECUPERARUSUARIOID);
		return usuario;
		
	}
	
	
	
	private static UsuarioVO obtenerUsuario(String nombreParametro,String parametro, String url)throws ClientProtocolException, IOException, JSONException{
		
		ArrayList<NameValuePair> lista = new ArrayList<NameValuePair>();
		lista.add(new BasicNameValuePair(nombreParametro, parametro));
		
		HttpParams httpParametros = new BasicHttpParams();

		HttpConnectionParams.setConnectionTimeout(httpParametros, 15000);
		HttpConnectionParams.setSoTimeout(httpParametros, 15000);

		HttpClient httpClient = new DefaultHttpClient(httpParametros);
		HttpPost httppost = new HttpPost(url);

		httppost.setEntity(new UrlEncodedFormEntity(lista));

		HttpResponse response = httpClient.execute(httppost);
		HttpEntity entity = response.getEntity();

		String result = EntityUtils.toString(entity);
		JSONObject jsonObject = new JSONObject(result);

		
		UsuarioVO usuario = new UsuarioVO(jsonObject.getInt("idUsuario"));
		if (usuario.getIdUsuario()!=-1){
			usuario.setEmail(jsonObject.getString("email"));
			usuario.setBorrado(jsonObject.getInt("borrado")==1);
			usuario.setIdentificador(jsonObject.getString("identificador"));
		}
		
		return usuario;
	}

}
